home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / smtp_relay.nasl < prev    next >
Text File  |  2005-01-14  |  4KB  |  131 lines

  1. #
  2. # This script was written by Renaud Deraison <deraison@cvs.nessus.org>
  3. #
  4. # See the Nessus Scripts License for details
  5. #
  6.  
  7. if(description)
  8. {
  9.  script_id(10262);
  10.  script_bugtraq_id(6118, 7580, 8196);
  11.  script_version ("$Revision: 1.32 $");
  12.  script_cve_id("CAN-1999-0512", "CAN-2002-1278", "CAN-2003-0285");
  13.  name["english"] = "Mail relaying";
  14.  name["francais"] = "Relais de mail";
  15.  script_name(english:name["english"],
  16.           francais:name["francais"]);
  17.  
  18.  desc["english"] = "
  19.  The remote SMTP server seems to allow the relaying. This means that
  20. it allows spammers to use your mail server to send their mails to
  21. the world, thus wasting your network bandwidth.
  22.  
  23. Risk factor : Low / Medium
  24.  
  25. Solution : configure your SMTP server so that it can't be used as a relay
  26.            any more.";
  27.  
  28.  
  29.  desc["francais"] = "
  30. Le serveur SMTP distant semble permettre le relaying. C'est α dire
  31. qu'il permet aux spammeurs de l'utiliser pour envoyer leurs mails au monde 
  32. entier, gachant ainsi votre bande passante.
  33.  
  34. Facteur de risque : Faible/Moyen
  35.  
  36. Solution : Reconfigurez votre serveur SMTP afin qu'il ne puisse plus etre
  37. utilisΘ comme relay.";
  38.  
  39.  
  40.  script_description(english:desc["english"],
  41.               francais:desc["francais"]);
  42.             
  43.  
  44.  summary["english"] = "Checks if the remote mail server can be used as a spam relay"; 
  45.  summary["francais"] = "VΘrifie si le serveur de mail distant peut etre utilisΘ comme relais de spam";
  46.  script_summary(english:summary["english"],
  47.           francais:summary["francais"]);
  48.  
  49.  script_category(ACT_GATHER_INFO);
  50.  
  51.  script_copyright(english:"This script is Copyright (C) 1999 Renaud Deraison",
  52.            francais:"Ce script est Copyright (C) 1999 Renaud Deraison");
  53.  
  54.  family["english"] = "SMTP problems";
  55.  family["francais"] = "ProblΦmes SMTP";
  56.  script_family(english:family["english"], francais:family["francais"]);
  57.  script_dependencie("find_service.nes", "sendmail_expn.nasl",
  58.         "smtp_settings.nasl");
  59.  script_exclude_keys("SMTP/wrapped", "SMTP/qmail");
  60.  script_require_ports("Services/smtp", 25);
  61.  exit(0);
  62. }
  63.  
  64. #
  65. # The script code starts here
  66. #
  67.  
  68. include("smtp_func.inc");
  69.  
  70.  
  71. function smtp_test_relay(tryauth)
  72. {
  73.  soc = open_sock_tcp(port);
  74.  if(!soc)exit(0);
  75.  data = smtp_recv_banner(socket:soc);
  76.  domain = get_kb_item("Settings/third_party_domain");
  77.  
  78.  crp = string("HELO ", domain, "\r\n");
  79.  send(socket:soc, data:crp);
  80.  data = recv_line(socket:soc, length:1024);
  81.  if(!ereg(pattern:"^[2-3][0-9][0-9] .*", string:data)) return(0);
  82.  
  83.  if(tryauth)
  84.  {
  85.   crp = string("AUTH CRAM-MD5\r\n");
  86.   send(socket:soc, data:crp);
  87.   data = recv_line(socket:soc, length:1024);
  88.   if(!ereg(pattern:"^[2-3][0-9][0-9] .*", string:data)) return(0);
  89.  
  90.   crp = string("ZnJlZCA5ZTk1YWVlMDljNDBhZjJiODRhMGMyYjNiYmFlNzg2Z==\r\n");
  91.   send(socket:soc, data:crp);
  92.   data = recv_line(socket:soc, length:1024);
  93.   if(!ereg(pattern:"^[2-3][0-9][0-9] .*", string:data)) return(0);
  94.  }
  95.  
  96.  crp = string("MAIL FROM: <test_1@", domain, ">\r\n");
  97.  send(socket:soc, data:crp);
  98.  data = recv_line(socket:soc, length:1024);
  99.  if(!ereg(pattern:"^[2-3][0-9][0-9] .*", string:data)) return(0);
  100.  
  101.  crp = string("RCPT TO: <test_2@", domain, ">\r\n");
  102.  send(socket:soc, data:crp);
  103.  i = recv_line(socket:soc, length:1024);
  104.  if(ereg(pattern:"^250 ", string:i))
  105.   {
  106.   send(socket:soc, data:string("DATA\r\n"));
  107.   r = recv_line(socket:soc, length:1024);
  108.   if(ereg(pattern:"^[2-3][0-9][0-9] .*", string:r))
  109.    {
  110.    security_warning(port);
  111.    set_kb_item(name:"SMTP/spam", value:TRUE);
  112.    set_kb_item(name:"SMTP/" + port + "/spam", value:TRUE);
  113.    }
  114.   }
  115.  close(soc);
  116. }
  117.  
  118. # can't perform this test on localhost
  119. if(islocalhost())exit(0);
  120.  
  121. # can't perform this test on the local net
  122. #if(islocalnet())exit(0);
  123.  
  124. port = get_kb_item("Services/smtp");
  125. if(!port)port = 25;
  126. if(get_port_state(port))
  127. {
  128.   smtp_test_relay(tryauth: 0);
  129.   smtp_test_relay(tryauth: 1);
  130. }
  131.